﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using WBGModel;
using System.Data;

namespace WBGDal
{
    public class DalCliente : ICRUD
    {
        public List<ModelCliente> Listar()
        {
            return Listar("");
        }

        public List<ModelCliente> Listar(string filtro)
        {
            String cmd = "SELECT Cliente.*, Nome=Pessoa.nome FROM Cliente, Pessoa WHERE Cliente.idPessoa=Pessoa.idPessoa" + (filtro.CompareTo("") == 0 ? "" : " AND " + filtro);
            return ConvertToList(UtilBanco.ExecComRetorno(cmd));
        }

        private List<ModelCliente> ConvertToList(DataTable resultSet)
        {
            List<ModelCliente> lst = new List<ModelCliente>();
            for (int i = 0; i < resultSet.Rows.Count; i++)
            {
                DataRow dr = resultSet.Rows[i];
                ModelCliente cliente = new ModelCliente();
                cliente.idCliente = Convert.ToInt32(dr["idCliente"]);
                cliente.idPessoa = Convert.ToInt32(dr["idPessoa"]);
                cliente.Nome = dr["Nome"].ToString();
                lst.Add(cliente);
            }
            return lst;
        }

        public void Inserir(ModelCliente obj)
        {
            String cmd = String.Format("INSERT INTO Cliente (idPessoa) VALUES ({0})", obj.idPessoa);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Alterar(ModelCliente obj)
        {
            String cmd = String.Format("UPDATE Cliente SET idPessoa={0} WHERE idCliente={1}", obj.idPessoa, obj.idCliente);
            UtilBanco.ExecSemRetorno(cmd);
        }

        public void Deletar(int id)
        {
            String cmd = String.Format("DELETE FROM Cliente WHERE idCliente={0}", id);
            UtilBanco.ExecSemRetorno(cmd);
        }
    }
}
